import { Injectable} from '@angular/core';
import {Http,Response, RequestOptions} from "@angular/http";
import 'rxjs/add/operator/toPromise';
import ip from '../../tools/config';
import {HttpInterceptorService} from "./http-utils.service";
import { LoadService } from "../utils/load.service";

/**
 * POST下载文件Service
 */
@Injectable()
export class FileDownloadService {
  contentTypes={};
  //API的URL
  apiURL='v1/api/purmgmt/biddingissue/DownloadFile';
  //服务IP端口
  HOST=ip.ipMap[' _pur_mgmt'];

  constructor(private http: Http ,private options: RequestOptions, private serviceHttp: HttpInterceptorService,private load: LoadService) {
    this.contentTypes = {
      ".323": "text/h323",
      ".3g2": "video/3gpp2",
      ".3gp": "video/3gpp",
      ".3gp2": "video/3gpp2",
      ".3gpp": "video/3gpp",
      ".7z": "application/x-7z-compressed",
      ".aa": "audio/audible",
      ".AAC": "audio/aac",
      ".aaf": "application/octet-stream",
      ".aax": "audio/vnd.audible.aax",
      ".ac3": "audio/ac3",
      ".aca": "application/octet-stream",
      ".accda": "application/msaccess.addin",
      ".accdb": "application/msaccess",
      ".accdc": "application/msaccess.cab",
      ".accde": "application/msaccess",
      ".accdr": "application/msaccess.runtime",
      ".accdt": "application/msaccess",
      ".accdw": "application/msaccess.webapplication",
      ".accft": "application/msaccess.ftemplate",
      ".acx": "application/internet-property-stream",
      ".AddIn": "text/xml",
      ".ade": "application/msaccess",
      ".adobebridge": "application/x-bridge-url",
      ".adp": "application/msaccess",
      ".ADT": "audio/vnd.dlna.adts",
      ".ADTS": "audio/aac",
      ".afm": "application/octet-stream",
      ".ai": "application/postscript",
      ".aif": "audio/x-aiff",
      ".aifc": "audio/aiff",
      ".aiff": "audio/aiff",
      ".air": "application/vnd.adobe.air-application-installer-package+zip",
      ".amc": "application/x-mpeg",
      ".application": "application/x-ms-application",
      ".art": "image/x-jg",
      ".asa": "application/xml",
      ".asax": "application/xml",
      ".ascx": "application/xml",
      ".asd": "application/octet-stream",
      ".asf": "video/x-ms-asf",
      ".ashx": "application/xml",
      ".asi": "application/octet-stream",
      ".asm": "text/plain",
      ".asmx": "application/xml",
      ".aspx": "application/xml",
      ".asr": "video/x-ms-asf",
      ".asx": "video/x-ms-asf",
      ".atom": "application/atom+xml",
      ".au": "audio/basic",
      ".avi": "video/x-msvideo",
      ".axs": "application/olescript",
      ".bas": "text/plain",
      ".bcpio": "application/x-bcpio",
      ".bin": "application/octet-stream",
      ".bmp": "image/bmp",
      ".c": "text/plain",
      ".cab": "application/octet-stream",
      ".caf": "audio/x-caf",
      ".calx": "application/vnd.ms-office.calx",
      ".cat": "application/vnd.ms-pki.seccat",
      ".cc": "text/plain",
      ".cd": "text/plain",
      ".cdda": "audio/aiff",
      ".cdf": "application/x-cdf",
      ".cer": "application/x-x509-ca-cert",
      ".chm": "application/octet-stream",
      ".class": "application/x-java-applet",
      ".clp": "application/x-msclip",
      ".cmx": "image/x-cmx",
      ".cnf": "text/plain",
      ".cod": "image/cis-cod",
      ".config": "application/xml",
      ".contact": "text/x-ms-contact",
      ".coverage": "application/xml",
      ".cpio": "application/x-cpio",
      ".cpp": "text/plain",
      ".crd": "application/x-mscardfile",
      ".crl": "application/pkix-crl",
      ".crt": "application/x-x509-ca-cert",
      ".cs": "text/plain",
      ".csdproj": "text/plain",
      ".csh": "application/x-csh",
      ".csproj": "text/plain",
      ".css": "text/css",
      ".csv": "text/csv",
      ".cur": "application/octet-stream",
      ".cxx": "text/plain",
      ".dat": "application/octet-stream",
      ".datasource": "application/xml",
      ".dbproj": "text/plain",
      ".dcr": "application/x-director",
      ".def": "text/plain",
      ".deploy": "application/octet-stream",
      ".der": "application/x-x509-ca-cert",
      ".dgml": "application/xml",
      ".dib": "image/bmp",
      ".dif": "video/x-dv",
      ".dir": "application/x-director",
      ".disco": "text/xml",
      ".dll": "application/x-msdownload",
      ".dll.config": "text/xml",
      ".dlm": "text/dlm",
      ".doc": "application/msword",
      ".docm": "application/vnd.ms-word.document.macroEnabled.12",
      ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      ".dot": "application/msword",
      ".dotm": "application/vnd.ms-word.template.macroEnabled.12",
      ".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
      ".dsp": "application/octet-stream",
      ".dsw": "text/plain",
      ".dtd": "text/xml",
      ".dtsConfig": "text/xml",
      ".dv": "video/x-dv",
      ".dvi": "application/x-dvi",
      ".dwf": "drawing/x-dwf",
      ".dwp": "application/octet-stream",
      ".dxr": "application/x-director",
      ".eml": "message/rfc822",
      ".emz": "application/octet-stream",
      ".eot": "application/octet-stream",
      ".eps": "application/postscript",
      ".etl": "application/etl",
      ".etx": "text/x-setext",
      ".evy": "application/envoy",
      ".exe": "application/octet-stream",
      ".exe.config": "text/xml",
      ".fdf": "application/vnd.fdf",
      ".fif": "application/fractals",
      ".filters": "Application/xml",
      ".fla": "application/octet-stream",
      ".flr": "x-world/x-vrml",
      ".flv": "video/x-flv",
      ".fsscript": "application/fsharp-script",
      ".fsx": "application/fsharp-script",
      ".generictest": "application/xml",
      ".gif": "image/gif",
      ".group": "text/x-ms-group",
      ".gsm": "audio/x-gsm",
      ".gtar": "application/x-gtar",
      ".gz": "application/x-gzip",
      ".h": "text/plain",
      ".hdf": "application/x-hdf",
      ".hdml": "text/x-hdml",
      ".hhc": "application/x-oleobject",
      ".hhk": "application/octet-stream",
      ".hhp": "application/octet-stream",
      ".hlp": "application/winhlp",
      ".hpp": "text/plain",
      ".hqx": "application/mac-binhex40",
      ".hta": "application/hta",
      ".htc": "text/x-component",
      ".htm": "text/html",
      ".html": "text/html",
      ".htt": "text/webviewhtml",
      ".hxa": "application/xml",
      ".hxc": "application/xml",
      ".hxd": "application/octet-stream",
      ".hxe": "application/xml",
      ".hxf": "application/xml",
      ".hxh": "application/octet-stream",
      ".hxi": "application/octet-stream",
      ".hxk": "application/xml",
      ".hxq": "application/octet-stream",
      ".hxr": "application/octet-stream",
      ".hxs": "application/octet-stream",
      ".hxt": "text/html",
      ".hxv": "application/xml",
      ".hxw": "application/octet-stream",
      ".hxx": "text/plain",
      ".i": "text/plain",
      ".ico": "image/x-icon",
      ".ics": "application/octet-stream",
      ".idl": "text/plain",
      ".ief": "image/ief",
      ".iii": "application/x-iphone",
      ".inc": "text/plain",
      ".inf": "application/octet-stream",
      ".inl": "text/plain",
      ".ins": "application/x-internet-signup",
      ".ipa": "application/x-itunes-ipa",
      ".ipg": "application/x-itunes-ipg",
      ".ipproj": "text/plain",
      ".ipsw": "application/x-itunes-ipsw",
      ".iqy": "text/x-ms-iqy",
      ".isp": "application/x-internet-signup",
      ".ite": "application/x-itunes-ite",
      ".itlp": "application/x-itunes-itlp",
      ".itms": "application/x-itunes-itms",
      ".itpc": "application/x-itunes-itpc",
      ".IVF": "video/x-ivf",
      ".jar": "application/java-archive",
      ".java": "application/octet-stream",
      ".jck": "application/liquidmotion",
      ".jcz": "application/liquidmotion",
      ".jfif": "image/pjpeg",
      ".jnlp": "application/x-java-jnlp-file",
      ".jpb": "application/octet-stream",
      ".jpe": "image/jpeg",
      ".jpeg": "image/jpeg",
      ".jpg": "image/jpeg",
      ".js": "application/x-javascript",
      ".jsx": "text/jscript",
      ".jsxbin": "text/plain",
      ".latex": "application/x-latex",
      ".library-ms": "application/windows-library+xml",
      ".lit": "application/x-ms-reader",
      ".loadtest": "application/xml",
      ".lpk": "application/octet-stream",
      ".lsf": "video/x-la-asf",
      ".lst": "text/plain",
      ".lsx": "video/x-la-asf",
      ".lzh": "application/octet-stream",
      ".m13": "application/x-msmediaview",
      ".m14": "application/x-msmediaview",
      ".m1v": "video/mpeg",
      ".m2t": "video/vnd.dlna.mpeg-tts",
      ".m2ts": "video/vnd.dlna.mpeg-tts",
      ".m2v": "video/mpeg",
      ".m3u": "audio/x-mpegurl",
      ".m3u8": "audio/x-mpegurl",
      ".m4a": "audio/m4a",
      ".m4b": "audio/m4b",
      ".m4p": "audio/m4p",
      ".m4r": "audio/x-m4r",
      ".m4v": "video/x-m4v",
      ".mac": "image/x-macpaint",
      ".mak": "text/plain",
      ".man": "application/x-troff-man",
      ".manifest": "application/x-ms-manifest",
      ".map": "text/plain",
      ".master": "application/xml",
      ".mda": "application/msaccess",
      ".mdb": "application/x-msaccess",
      ".mde": "application/msaccess",
      ".mdp": "application/octet-stream",
      ".me": "application/x-troff-me",
      ".mfp": "application/x-shockwave-flash",
      ".mht": "message/rfc822",
      ".mhtml": "message/rfc822",
      ".mid": "audio/mid",
      ".midi": "audio/mid",
      ".mix": "application/octet-stream",
      ".mk": "text/plain",
      ".mmf": "application/x-smaf",
      ".mno": "text/xml",
      ".mny": "application/x-msmoney",
      ".mod": "video/mpeg",
      ".mov": "video/quicktime",
      ".movie": "video/x-sgi-movie",
      ".mp2": "video/mpeg",
      ".mp2v": "video/mpeg",
      ".mp3": "audio/mpeg",
      ".mp4": "video/mp4",
      ".mp4v": "video/mp4",
      ".mpa": "video/mpeg",
      ".mpe": "video/mpeg",
      ".mpeg": "video/mpeg",
      ".mpf": "application/vnd.ms-mediapackage",
      ".mpg": "video/mpeg",
      ".mpp": "application/vnd.ms-project",
      ".mpv2": "video/mpeg",
      ".mqv": "video/quicktime",
      ".ms": "application/x-troff-ms",
      ".msi": "application/octet-stream",
      ".mso": "application/octet-stream",
      ".mts": "video/vnd.dlna.mpeg-tts",
      ".mtx": "application/xml",
      ".mvb": "application/x-msmediaview",
      ".mvc": "application/x-miva-compiled",
      ".mxp": "application/x-mmxp",
      ".nc": "application/x-netcdf",
      ".nsc": "video/x-ms-asf",
      ".nws": "message/rfc822",
      ".ocx": "application/octet-stream",
      ".oda": "application/oda",
      ".odc": "text/x-ms-odc",
      ".odh": "text/plain",
      ".odl": "text/plain",
      ".odp": "application/vnd.oasis.opendocument.presentation",
      ".ods": "application/oleobject",
      ".odt": "application/vnd.oasis.opendocument.text",
      ".one": "application/onenote",
      ".onea": "application/onenote",
      ".onepkg": "application/onenote",
      ".onetmp": "application/onenote",
      ".onetoc": "application/onenote",
      ".onetoc2": "application/onenote",
      ".orderedtest": "application/xml",
      ".osdx": "application/opensearchdescription+xml",
      ".p10": "application/pkcs10",
      ".p12": "application/x-pkcs12",
      ".p7b": "application/x-pkcs7-certificates",
      ".p7c": "application/pkcs7-mime",
      ".p7m": "application/pkcs7-mime",
      ".p7r": "application/x-pkcs7-certreqresp",
      ".p7s": "application/pkcs7-signature",
      ".pbm": "image/x-portable-bitmap",
      ".pcast": "application/x-podcast",
      ".pct": "image/pict",
      ".pcx": "application/octet-stream",
      ".pcz": "application/octet-stream",
      ".pdf": "application/pdf",
      ".pfb": "application/octet-stream",
      ".pfm": "application/octet-stream",
      ".pfx": "application/x-pkcs12",
      ".pgm": "image/x-portable-graymap",
      ".pic": "image/pict",
      ".pict": "image/pict",
      ".pkgdef": "text/plain",
      ".pkgundef": "text/plain",
      ".pko": "application/vnd.ms-pki.pko",
      ".pls": "audio/scpls",
      ".pma": "application/x-perfmon",
      ".pmc": "application/x-perfmon",
      ".pml": "application/x-perfmon",
      ".pmr": "application/x-perfmon",
      ".pmw": "application/x-perfmon",
      ".png": "image/png",
      ".pnm": "image/x-portable-anymap",
      ".pnt": "image/x-macpaint",
      ".pntg": "image/x-macpaint",
      ".pnz": "image/png",
      ".pot": "application/vnd.ms-powerpoint",
      ".potm": "application/vnd.ms-powerpoint.template.macroEnabled.12",
      ".potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
      ".ppa": "application/vnd.ms-powerpoint",
      ".ppam": "application/vnd.ms-powerpoint.addin.macroEnabled.12",
      ".ppm": "image/x-portable-pixmap",
      ".pps": "application/vnd.ms-powerpoint",
      ".ppsm": "application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
      ".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
      ".ppt": "application/vnd.ms-powerpoint",
      ".pptm": "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
      ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
      ".prf": "application/pics-rules",
      ".prm": "application/octet-stream",
      ".prx": "application/octet-stream",
      ".ps": "application/postscript",
      ".psc1": "application/PowerShell",
      ".psd": "application/octet-stream",
      ".psess": "application/xml",
      ".psm": "application/octet-stream",
      ".psp": "application/octet-stream",
      ".pub": "application/x-mspublisher",
      ".pwz": "application/vnd.ms-powerpoint",
      ".qht": "text/x-html-insertion",
      ".qhtm": "text/x-html-insertion",
      ".qt": "video/quicktime",
      ".qti": "image/x-quicktime",
      ".qtif": "image/x-quicktime",
      ".qtl": "application/x-quicktimeplayer",
      ".qxd": "application/octet-stream",
      ".ra": "audio/x-pn-realaudio",
      ".ram": "audio/x-pn-realaudio",
      ".rar": "application/octet-stream",
      ".ras": "image/x-cmu-raster",
      ".rat": "application/rat-file",
      ".rc": "text/plain",
      ".rc2": "text/plain",
      ".rct": "text/plain",
      ".rdlc": "application/xml",
      ".resx": "application/xml",
      ".rf": "image/vnd.rn-realflash",
      ".rgb": "image/x-rgb",
      ".rgs": "text/plain",
      ".rm": "application/vnd.rn-realmedia",
      ".rmi": "audio/mid",
      ".rmp": "application/vnd.rn-rn_music_package",
      ".roff": "application/x-troff",
      ".rpm": "audio/x-pn-realaudio-plugin",
      ".rqy": "text/x-ms-rqy",
      ".rtf": "application/rtf",
      ".rtx": "text/richtext",
      ".ruleset": "application/xml",
      ".s": "text/plain",
      ".safariextz": "application/x-safari-safariextz",
      ".scd": "application/x-msschedule",
      ".sct": "text/scriptlet",
      ".sd2": "audio/x-sd2",
      ".sdp": "application/sdp",
      ".sea": "application/octet-stream",
      ".searchConnector-ms": "application/windows-search-connector+xml",
      ".setpay": "application/set-payment-initiation",
      ".setreg": "application/set-registration-initiation",
      ".settings": "application/xml",
      ".sgimb": "application/x-sgimb",
      ".sgml": "text/sgml",
      ".sh": "application/x-sh",
      ".shar": "application/x-shar",
      ".shtml": "text/html",
      ".sit": "application/x-stuffit",
      ".sitemap": "application/xml",
      ".skin": "application/xml",
      ".sldm": "application/vnd.ms-powerpoint.slide.macroEnabled.12",
      ".sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
      ".slk": "application/vnd.ms-excel",
      ".sln": "text/plain",
      ".slupkg-ms": "application/x-ms-license",
      ".smd": "audio/x-smd",
      ".smi": "application/octet-stream",
      ".smx": "audio/x-smd",
      ".smz": "audio/x-smd",
      ".snd": "audio/basic",
      ".snippet": "application/xml",
      ".snp": "application/octet-stream",
      ".sol": "text/plain",
      ".sor": "text/plain",
      ".spc": "application/x-pkcs7-certificates",
      ".spl": "application/futuresplash",
      ".src": "application/x-wais-source",
      ".srf": "text/plain",
      ".SSISDeploymentManifest": "text/xml",
      ".ssm": "application/streamingmedia",
      ".sst": "application/vnd.ms-pki.certstore",
      ".stl": "application/vnd.ms-pki.stl",
      ".sv4cpio": "application/x-sv4cpio",
      ".sv4crc": "application/x-sv4crc",
      ".svc": "application/xml",
      ".swf": "application/x-shockwave-flash",
      ".t": "application/x-troff",
      ".tar": "application/x-tar",
      ".tcl": "application/x-tcl",
      ".testrunconfig": "application/xml",
      ".testsettings": "application/xml",
      ".tex": "application/x-tex",
      ".texi": "application/x-texinfo",
      ".texinfo": "application/x-texinfo",
      ".tgz": "application/x-compressed",
      ".thmx": "application/vnd.ms-officetheme",
      ".thn": "application/octet-stream",
      ".tif": "image/tiff",
      ".tiff": "image/tiff",
      ".tlh": "text/plain",
      ".tli": "text/plain",
      ".toc": "application/octet-stream",
      ".tr": "application/x-troff",
      ".trm": "application/x-msterminal",
      ".trx": "application/xml",
      ".ts": "video/vnd.dlna.mpeg-tts",
      ".tsv": "text/tab-separated-values",
      ".ttf": "application/octet-stream",
      ".tts": "video/vnd.dlna.mpeg-tts",
      ".txt": "text/plain",
      ".u32": "application/octet-stream",
      ".uls": "text/iuls",
      ".user": "text/plain",
      ".ustar": "application/x-ustar",
      ".vb": "text/plain",
      ".vbdproj": "text/plain",
      ".vbk": "video/mpeg",
      ".vbproj": "text/plain",
      ".vbs": "text/vbscript",
      ".vcf": "text/x-vcard",
      ".vcproj": "Application/xml",
      ".vcs": "text/plain",
      ".vcxproj": "Application/xml",
      ".vddproj": "text/plain",
      ".vdp": "text/plain",
      ".vdproj": "text/plain",
      ".vdx": "application/vnd.ms-visio.viewer",
      ".vml": "text/xml",
      ".vscontent": "application/xml",
      ".vsct": "text/xml",
      ".vsd": "application/vnd.visio",
      ".vsi": "application/ms-vsi",
      ".vsix": "application/vsix",
      ".vsixlangpack": "text/xml",
      ".vsixmanifest": "text/xml",
      ".vsmdi": "application/xml",
      ".vspscc": "text/plain",
      ".vss": "application/vnd.visio",
      ".vsscc": "text/plain",
      ".vssettings": "text/xml",
      ".vssscc": "text/plain",
      ".vst": "application/vnd.visio",
      ".vstemplate": "text/xml",
      ".vsto": "application/x-ms-vsto",
      ".vsw": "application/vnd.visio",
      ".vsx": "application/vnd.visio",
      ".vtx": "application/vnd.visio",
      ".wav": "audio/wav",
      ".wave": "audio/wav",
      ".wax": "audio/x-ms-wax",
      ".wbk": "application/msword",
      ".wbmp": "image/vnd.wap.wbmp",
      ".wcm": "application/vnd.ms-works",
      ".wdb": "application/vnd.ms-works",
      ".wdp": "image/vnd.ms-photo",
      ".webarchive": "application/x-safari-webarchive",
      ".webtest": "application/xml",
      ".wiq": "application/xml",
      ".wiz": "application/msword",
      ".wks": "application/vnd.ms-works",
      ".WLMP": "application/wlmoviemaker",
      ".wlpginstall": "application/x-wlpg-detect",
      ".wlpginstall3": "application/x-wlpg3-detect",
      ".wm": "video/x-ms-wm",
      ".wma": "audio/x-ms-wma",
      ".wmd": "application/x-ms-wmd",
      ".wmf": "application/x-msmetafile",
      ".wml": "text/vnd.wap.wml",
      ".wmlc": "application/vnd.wap.wmlc",
      ".wmls": "text/vnd.wap.wmlscript",
      ".wmlsc": "application/vnd.wap.wmlscriptc",
      ".wmp": "video/x-ms-wmp",
      ".wmv": "video/x-ms-wmv",
      ".wmx": "video/x-ms-wmx",
      ".wmz": "application/x-ms-wmz",
      ".wpl": "application/vnd.ms-wpl",
      ".wps": "application/vnd.ms-works",
      ".wri": "application/x-mswrite",
      ".wrl": "x-world/x-vrml",
      ".wrz": "x-world/x-vrml",
      ".wsc": "text/scriptlet",
      ".wsdl": "text/xml",
      ".wvx": "video/x-ms-wvx",
      ".x": "application/directx",
      ".xaf": "x-world/x-vrml",
      ".xaml": "application/xaml+xml",
      ".xap": "application/x-silverlight-app",
      ".xbap": "application/x-ms-xbap",
      ".xbm": "image/x-xbitmap",
      ".xdr": "text/plain",
      ".xht": "application/xhtml+xml",
      ".xhtml": "application/xhtml+xml",
      ".xla": "application/vnd.ms-excel",
      ".xlam": "application/vnd.ms-excel.addin.macroEnabled.12",
      ".xlc": "application/vnd.ms-excel",
      ".xld": "application/vnd.ms-excel",
      ".xlk": "application/vnd.ms-excel",
      ".xll": "application/vnd.ms-excel",
      ".xlm": "application/vnd.ms-excel",
      ".xls": "application/vnd.ms-excel",
      ".xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
      ".xlsm": "application/vnd.ms-excel.sheet.macroEnabled.12",
      ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      ".xlt": "application/vnd.ms-excel",
      ".xltm": "application/vnd.ms-excel.template.macroEnabled.12",
      ".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
      ".xlw": "application/vnd.ms-excel",
      ".xml": "text/xml",
      ".xmta": "application/xml",
      ".xof": "x-world/x-vrml",
      ".XOML": "text/plain",
      ".xpm": "image/x-xpixmap",
      ".xps": "application/vnd.ms-xpsdocument",
      ".xrm-ms": "text/xml",
      ".xsc": "application/xml",
      ".xsd": "text/xml",
      ".xsf": "text/xml",
      ".xsl": "text/xml",
      ".xslt": "text/xml",
      ".xsn": "application/octet-stream",
      ".xss": "application/xml",
      ".xtp": "application/octet-stream",
      ".xwd": "image/x-xwindowdump",
      ".z": "application/x-compress",
      ".zip": "application/x-zip-compressed",
      '.SGCC': 'text/plain'
    };
  }


  downloadByIframe(data, url = this.apiURL){
    const iframe = document.createElement('iframe');
    iframe.src = this.HOST + url + this.transform(data);
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    
  }

  // 将 json数据序列化并且加密
  transform(data: object) :string{
    let result: any = [];
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        result.push(`${key}=${data[key]}`);
      }
    }
    result = ip.ipMap['isEncrypt'] ?  ip.encode2(result.join('&')) : result.join('&');
    return '?' + result;
  }

  /**
   * 文件下载（POST请求）
   * @param {string} filename
   * @param {string} filepath
   */
  public download(filename:string,filepath:string,isLoading : Boolean=true, target: string = '.content'){
    let param = {
      "filename":filename,
      "contentType":this.getFileTypeByName(filename),
      "filepath":filepath
    };
    isLoading && this.load.show("正在下载……", target);
    this.postRequest(this.apiURL,param).then(res => {
      isLoading && this.load.hide();
      if (res.body.type == 'errorMessage') {
        const blob = new Blob([res.body], {type: this.getFileTypeByName('下载失败.txt')});
        // ======== 20200804 add by lijinfei IE兼容 ============//
        const fileName = '下载失败.txt';
        if('download' in document.createElement('a')) { // 非IE下载
          const objectUrl = URL.createObjectURL(blob);
          const a = document.createElement('a');
          document.body.appendChild(a);
          a.setAttribute('style', 'display:none');
          a.setAttribute('href', objectUrl);
          a.setAttribute('download', fileName);
          a.click();
          URL.revokeObjectURL(objectUrl);
          document.body.removeChild(a);
        } else { // IE10+下载
          navigator.msSaveBlob(blob, fileName)
        }
        // ======== 20200804 add by lijinfei IE兼容 ============//

        // var objectUrl = URL.createObjectURL(blob);
        // var a = document.createElement('a');
        // document.body.appendChild(a);
        // a.setAttribute('style', 'display:none');
        // a.setAttribute('href', objectUrl);
        // a.setAttribute('download', '下载失败.txt');
      } else {
        const blob = new Blob([res.body], {type: this.getFileTypeByName(filename)});
        // ======== 20200804 add by lijinfei IE兼容 ============//
        if('download' in document.createElement('a')) { // 非IE下载
          const objectUrl = URL.createObjectURL(blob);
          const a = document.createElement('a');
          document.body.appendChild(a);
          a.setAttribute('style', 'display:none');
          a.setAttribute('href', objectUrl);
          a.setAttribute('download', filename);
          a.click();
          URL.revokeObjectURL(objectUrl);
          document.body.removeChild(a);
        } else { // IE10+下载
          navigator.msSaveBlob(blob, filename)
        }
        // ======== 20200804 add by lijinfei IE兼容 ============//
        // var objectUrl = URL.createObjectURL(blob);
        // var a = document.createElement('a');
        // document.body.appendChild(a);
        // a.setAttribute('style', 'display:none');
        // a.setAttribute('href', objectUrl);
        // a.setAttribute('download', filename);
      }
    });
  }
  public downloadBid(filename:string,filepath:string){
    let param = {
      "filename":filename,
      "contentType":this.getFileTypeByName(filename),
      "filepath":filepath
    };
    this.postRequestBid(this.apiURL,param).then(res => {
      const blob = new Blob([res.body], {type: this.getFileTypeByName(filename)});
      // ======== 20200804 add by lijinfei IE兼容 ============//
      if('download' in document.createElement('a')) { // 非IE下载
        const objectUrl = URL.createObjectURL(blob);
        const a = document.createElement('a');
        document.body.appendChild(a);
        a.setAttribute('style', 'display:none');
        a.setAttribute('href', objectUrl);
        a.setAttribute('download', filename);
        a.click();
        URL.revokeObjectURL(objectUrl);
        document.body.removeChild(a);
      } else { // IE10+下载
        navigator.msSaveBlob(blob, filename)
      }
      // ======== 20200804 add by lijinfei IE兼容 ============//
      // var objectUrl = URL.createObjectURL(blob);
      // var a = document.createElement('a');
      // document.body.appendChild(a);
      // a.setAttribute('style', 'display:none');
      // a.setAttribute('href', objectUrl);
      // a.setAttribute('download', filename);
      // a.click();
      // URL.revokeObjectURL(objectUrl);
    });
  }
  /**
   * 文件下载（POST请求）
   * @param {string} filename
   * @param {string} filepath
   */
  public downloadAndFn(filename:string,filepath:string,callback,callbackParams){
    let param = {
      "filename":filename,
      "contentType":this.getFileTypeByName(filename),
      "filepath":filepath
    };
    this.postRequest(this.apiURL,param).then(res => {
      var blob = new Blob([res.body], {type: this.getFileTypeByName(filename)});
      // ======== 20200804 add by lijinfei IE兼容 ============//
      if('download' in document.createElement('a')) { // 非IE下载
        const objectUrl = URL.createObjectURL(blob);
        const a = document.createElement('a');
        document.body.appendChild(a);
        a.setAttribute('style', 'display:none');
        a.setAttribute('href', objectUrl);
        a.setAttribute('download', filename);
        a.click();
        URL.revokeObjectURL(objectUrl);
        callback.call(callbackParams);
        document.body.removeChild(a);
      } else { // IE10+下载
        navigator.msSaveBlob(blob, filename);
        callback.call(callbackParams);
      }
      // ======== 20200804 add by lijinfei IE兼容 ============//
      // var objectUrl = URL.createObjectURL(blob);
      // var a = document.createElement('a');
      // document.body.appendChild(a);
      // a.setAttribute('style', 'display:none');
      // a.setAttribute('href', objectUrl);
      // a.setAttribute('download', filename);
      // a.click();
      // URL.revokeObjectURL(objectUrl);
      // callback.call(callbackParams);
    });
  }

  /**
   * 文件下载（POST请求）
   *
   * @param {string} urlstring
   * @param {} param
   */
  public mydownload( urlstring: string, param: {}) {
    if (Object.is(urlstring, undefined) || Object.is(urlstring, null)) {
      urlstring = this.apiURL;
    }
    this.postRequest(urlstring, param).then(res => {
      const blob = new Blob([res.body], {type: this.getFileTypeByName(param['filename'])});
      // ======== 20200804 add by lijinfei IE兼容 ============//
      if('download' in document.createElement('a')) { // 非IE下载
        const objectUrl = URL.createObjectURL(blob);
        const a = document.createElement('a');
        document.body.appendChild(a);
        a.setAttribute('style', 'display:none');
        a.setAttribute('href', objectUrl);
        a.setAttribute('download', param['filename']);
        a.click();
        URL.revokeObjectURL(objectUrl);
        document.body.removeChild(a);
      } else { // IE10+下载
        navigator.msSaveBlob(blob, param['filename'])
      }
      // ======== 20200804 add by lijinfei IE兼容 ============//
      // let objectUrl = URL.createObjectURL(blob);
      // let a = document.createElement('a');
      // document.body.appendChild(a);
      // a.setAttribute('style', 'display:none');
      // a.setAttribute('href', objectUrl);
      // a.setAttribute('download', param['filename']);
      // a.click();
      // URL.revokeObjectURL(objectUrl);
    });
  }

  /**
   * 文件下载（POST请求）
   *
   * @param {string} urlstring
   * @param {} param
   */
  public mydownloadBid( urlstring: string, param: {}) {
    if (Object.is(urlstring, undefined) || Object.is(urlstring, null)) {
      urlstring = this.apiURL;
    }
    this.postRequestBid(urlstring, param).then(res => {
      const blob = new Blob([res.body], {type: this.getFileTypeByName(param['filename'])});
      // ======== 20200804 add by lijinfei IE兼容 ============//
      if('download' in document.createElement('a')) { // 非IE下载
        const objectUrl = URL.createObjectURL(blob);
        const a = document.createElement('a');
        document.body.appendChild(a);
        a.setAttribute('style', 'display:none');
        a.setAttribute('href', objectUrl);
        a.setAttribute('download', param['filename']);
        a.click();
        URL.revokeObjectURL(objectUrl);
        document.body.removeChild(a);
      } else { // IE10+下载
        navigator.msSaveBlob(blob, param['filename'])
      }
      // ======== 20200804 add by lijinfei IE兼容 ============//

      // let objectUrl = URL.createObjectURL(blob);
      // let a = document.createElement('a');
      // document.body.appendChild(a);
      // a.setAttribute('style', 'display:none');
      // a.setAttribute('href', objectUrl);
      // a.setAttribute('download', param['filename']);
      // a.click();
      // URL.revokeObjectURL(objectUrl);
    });
  }

  /**
   * 获取文件后缀名
   * @param {string} filename
   * @returns {any}
   */
  private getFileTypeByName(filename:string){
    let type = filename.substring(filename.indexOf("."),filename.length);
    return this.contentTypes[type];
  }
  /**
   * 根据条件查询数据
   * @param url
   * @param params
   */
  private postRequest(url,params) {
    return this.serviceHttp.request({
      method:"post",
      responseType:'blob',
      url:url,
      data:params
    })
  }

  /**
   * 根据条件查询数据
   * @param url
   * @param params
   */
  private postRequestBid(url,params) {
    return this.serviceHttp.requestBid({
      method:"post",
      responseType:'blob',
      url:url,
      data:params
    })
  }

  public postRequestBidPub(url,params) {
    return this.serviceHttp.requestFor Bid({
      method:"post",
      responseType:'blob',
      url:url,
      data:params
    })
  }

  /**
   * 统一发送请求
   * @param params
   * @returns {Promise<{success: boolean, msg: string}>|Promise<R>}
   */
  private request(params: any): any {
    // POST请求（参数、返回值类型都是任意类型)
    // params['url'] = this.config.HOSTURL + params['url'];
    params['url'] = this.HOST + params['url'];
    //params['url'] = params['url'];
    //console.log(params['url']);
    if (params['method'] == 'post' || params['method'] == 'POST') {
      if('blob' === params['responseType']){
        return this.post(params['url'], params['data'], params['responseType'])
      }else {
        return this.post(params['url'], params['data'], null);
      }
    } else { // 其他请求
      return this.get(params['url'], params['data']);
    }
  }

  /**
   * get请求
   * @param url 接口地址
   * @param params 参数
   * @returns {Promise<R>|Promise<U>}
   */
  private get(url: string, params: any): any {
    return this.http.get(url, {search: params})
      .toPromise()
      .then(this.handleSuccess)
      .catch(res => this.handleError(res));
  }

  /**
   * post请求
   * @param url 接口地址
   * @param params 参数
   * @returns {Promise<R>|Promise<U>}
   */
  private post(url: string, params: any, params2: any) {
    this.options = new RequestOptions({ responseType: 3 });
    if(params2){
      return this.http.post(url, params, this.options)
        .toPromise()
        .then(this.handleSuccess)
        .catch(res => this.handleError(res));
    }else{
      return this.http.post(url, params)
        .toPromise()
        .then(this.handleSuccess)
        .catch(res => this.handleError(res));
    }

  }

  /**
   * 处理请求成功
   * @param res
   * @returns {{data: (string|null|((node:any)=>any)}}
   */
  private handleSuccess(res: Response) {
    let body = res["_body"];
    // console.log("接口返回的成功信息：" + body)
    if (body) { // 有数据返回
      return {
        body: body,
        data: res.json().data || {}, // 返回内容
        code: res.json().code || {}, // 返回code
        message: res.json().message || {}, // 返回信息
        statusText: res.statusText,
        status: res.status,
        success: true
      }
    } else { // 无数据返回
      return {
        data: res.json().data || {}, // 返回内容
        code: res.json().code || {}, // 返回code
        message: res.json().message || {}, // 返回信息
        statusText: res.statusText,
        status: res.status,
        success: true
      }
    }
  }

  /**
   * 处理请求错误
   * @param error
   * @returns {void|Promise<string>|Promise<T>|any}
   */
  private handleError(error) {
    console.log(error);
    let msg = '请求失败';
    if (error.status == 400) {
      console.log('请求参数正确');
    }
    if (error.status == 404) {
      console.error('请检查路径是否正确');
    }
    if (error.status == 500) {
      console.error('请求的服务器错误');
    }
    console.log(error);
    return {success: false, msg: msg};
  }  

  static checkFileType(name: string, targetType: string[] | string){
    const shouldType = {
      excel: ['xls', 'xlsx'],
      pdf: ['pdf'],
      jpg: ['jpg', 'jpeg', 'png'],
      word: ['doc', 'docx'],
      all: ['xls', 'xlsx', 'pdf', 'jpg', 'jpeg', 'png', 'doc', 'docx', 'zip']
    };
    let types: any;
    if(typeof targetType == 'string'){
      types = shouldType[targetType];
    }else{
      types = targetType;
    }
    const currType = name.split('.')[name.split('.').length - 1];
    if(types.some(type => type === currType)){
      return true;
    }
    return false;
  }


  /**
   * 文件下载
   * @param res 返回结果
   * @param fileType 文件类型
   * @param fileName 文件名
   */
  public downloadPub(res: Response, fileType: string, fileName: string) {
    const blob = new Blob([(res as any).body], { type: fileType });
    // ======== 20200804 add by lijinfei IE兼容 ============//
    if('download' in document.createElement('a')) { // 非IE下载
      const objectUrl = URL.createObjectURL(blob);
      const a = document.createElement('a');
      document.body.appendChild(a);
      a.setAttribute('style', 'display:none');
      a.setAttribute('href', objectUrl);
      a.setAttribute('download', fileName);
      a.click();
      URL.revokeObjectURL(objectUrl);
      document.body.removeChild(a);
    } else { // IE10+下载
      navigator.msSaveBlob(blob, fileName);
    }
  }
}
